home *** CD-ROM | disk | FTP | other *** search
- ╨╟═-64
- ╨ROGRAM ╟RAPHICS ═ANAGEMENT ON THE ├OMMODORE 64
- ┬Y ─AVID ╨. ─ARUS, ╦EN ╞RENCH, AND ╠OUIS ╥. ╫ALLACE
-
- ╧RIGINALLY PUBLISHED IN ├OMMODORE ╨OWER/╨LAY -- ╞EBRUARY/═ARCH 1986
-
-
- ╧╓┼╥╓╔┼╫ OF ╨╟═-64
- ------------------
-
- ╚AVE YOU EVER BEEN WRITING A ┬┴╙╔├ PROGRAM THAT USES SOME PART OF THE
- ├OMMODORE 64'S GRAPHICS ONLY TO FIND THE PROGRAM RUNS TOO SLOW? ╩UST TO
- PLOT A POINT REQUIRES SEVERAL LINES OF PROGRAM. ┴NIMATING SPRITES USING
- ╨╧╦┼'S REDUCES THEIR MOTION TO A CRAWL. ┘OUR ALTERNATIVES ARE TO WRITE IN
- MACHINE LANGUAGE OR USE A ┬┴╙╔├ LANGUAGE EXTENSION.
-
- "╨╟═-64" GIVES YOU THE BEST OF BOTH THOSE ALTERNATIVES. ╨╟═, WHICH
- STANDS FOR ╨ROGRAM ╟RAPHICS ═ANAGER, IS A LIBRARY OF VERY FAST
- MACHINE-LANGUAGE SUBROUTINES THAT YOU USE LIKE ┬┴╙╔├ COMMANDS. ╘HIS SYSTEM
- ALLOWS YOU TO USE THE HIGH-RESOLUTION GRAPHICS AND ANIMATION OF THE
- ├OMMODORE 64 WITHOUT ┬┴╙╔├'S SPEED LIMITATIONS, AND ALSO HAVE THE USE OF
- THE ╥┴═ HIDDEN UNDER THE OPERATING SYSTEM.
-
- ╧NE OF THE MANY POWERFUL FEATURES OF ╨╟═ IS THE APPROACH TO CHARACTER
- GRAPHICS. ╚ERE, THERE IS NO SEPARATE TEXT MODE OR GRAPHICS MODE. ╔N MANY
- WAYS, THIS IS THE WAY THE ┴PPLE ═ACINTOSH WORKS; AND, IN FACT, THERE ARE
- STRONG SIMILARITIES BETWEEN THE ═AC AND ╨╟═'S GRAPHIC ABILITIES.
-
- ╠IKE THE ═ACINTOSH, ╨╟═ ALLOWS YOU TO FREELY MIX TEXT AND GRAPHICS ON
- THE SAME SCREEN. ┘OU CAN HAVE AS MANY DIFFERENT TEXT STYLES AS YOU WISH.
- ╘EXT CAN BE ENLARGED TO DOUBLE HEIGHT OR DOUBLE WIDTH OR BOTH. ╨╟═ ALSO
- SUPPORTS 80-COLUMN REGULAR AND DOUBLE-HEIGHT GRAPHICS. ╘HE CHARACTERS CAN
- BE IN ANY OF 16 COLORS, AND EACH CHARACTER'S BACKGROUND COLOR CAN BE
- INDEPENDENTLY CONTROLLED JUST AS IN ┼XTENDED ├OLOR ╘EXT ═ODE. ┼ACH
- CHARACTER STRING CAN BE PRINTED AT SPECIFIC SCREEN LOCATIONS, GIVING YOU A
- VERY EFFECTIVE ╨╥╔╬╘ ┴╘ COMMAND.
-
- ╨╟═ ALSO ALLOWS YOU TO EASILY PLOT POINTS, DRAW LINES, AND FILL AN
- AREA IN ANY COLOR YOU WISH, SO YOU CAN INTERMIX YOUR NEW TEXT GRAPHICS WITH
- BITMAP DISPLAYS LIKE CHARTS AND DRAWINGS. ╞OR THOSE OF YOU INTERESTED IN
- GRAPHING DATA, A 3─ ┬┴╥ COMMAND IS INCLUDED. ╘O MAKE 3─ BARS, JUST GIVE
- THE SIZE, COLOR AND LOCATION, AND THEY QUICKLY GROW ON THE SCREEN. ╘HIS IS
- GREAT FOR COMBINING TEXT AND BITMAP IMAGES IN COLORFUL PRESENTATION-QUALITY
- GRAPHIC DISPLAYS.
-
- ╒SING ╨╟═, YOU CAN EVEN EMULATE WINDOWS IN YOUR PROGRAMS. ╫INDOWS
- ARE SUB-SCREENS WITHIN THE MAIN SCREEN, AND CAN BE ANY SIZE FROM A FULL
- SCREEN TO A SINGLE CHARACTER. ┘OU CAN EASILY SUPERIMPOSE ONE IMAGE ON
- ANOTHER (FOR INSTANCE, SUPERIMPOSE A GRAPH ON TOP OF A SPREADSHEET),
- MANIPULATE IT, AND THEN RESTORE THE ORIGINAL UNDERNEATH. ╧R MAYBE YOU WANT
- TO GET A DIRECTORY, PRINT IT ON THE SCREEN IN A WINDOW, AND THEN POP THE
- WINDOW BACK UP WITHOUT EFFECTING WHAT'S UNDER IT. ╞IVE NEW COMMANDS ARE
- PRESENT SO YOU CAN COPY A WINDOW, RESTORE IT, FILL IT WITH A VALUE, REVERSE
- IT, OR EVEN COLOR IT.
-
- ╫HEN YOU USE THE WINDOW-COPY COMMAND, YOU MUST HAVE A SECTION OF
- MEMORY SET ASIDE FOR IT TO BE STORED. ╘HERE ARE A NUMBER OF PLACES IN THE
- 64 WHERE FREE ╥┴═ IS AVAILABLE TO DO JUST THAT. ╞OR INSTANCE, THERE IS 8╦
- OF ╥┴═ UNDER ┬┴╙╔├ (40960-53247) AND THERE IS ANOTHER 8╦ UNDER THE KERNAL
- (57344-65343). ╘HERE IS ALSO 4╦ OF ╥┴═ AT $├000 (49152-53247) AND ANOTHER
- 195 BYTES IN THE CASSETTE BUFFER (828-1023). ╘HIS GIVES OVER 20╦ OF
- ADDITIONAL ╥┴═ FOR YOU TO USE AS SCREENS AND STORAGE AREAS. ╘O ACCESS
- THESE AREAS, THERE ARE SEVERAL MEMORY MANAGEMENT COMMANDS, INCLUDING THE
- ╙┼╘ ┴──╥┼╙╙ AND ╪╞┼╥ ═┼═╧╥┘ COMMANDS.
-
- ╙PRITES (MOVEABLE OBJECT BLOCKS) ARE AN IMPORTANT FEATURE OF THE
- ├OMMODORE 64. ╨╟═ FULLY SUPPORTS SPRITES WITH OVER A DOZEN COMMANDS,
- INCLUDING ONE THAT ALLOWS YOU TO USE A JOYSTICK OR THE CURSOR KEYS TO
- CONTROL AN ICON SPRITE IN MUCH THE SAME WAY AS THE ═ACINTOSH'S MOUSE IS
- USED. ╬O PROGRAMMING IS REQUIRED TO MOVE THE ICON ONCE IT HAS BEEN
- ACTIVATED.
-
- ╔N ADDITION, ╨╟═ PROVIDES A ╙╨╥╔╘┼ ┴╬╔═┴╘┼ COMMAND. ┴NIMATE ALLOWS
- THE ┬┴╙╔├ PROGRAMMER TO TELL A SPRITE TO GO FROM ITS CURRENT POSITION TO A
- GIVEN X AND Y AT A SPECIFIED SPEED. ╘HE SPRITE IMMEDIATELY BEGINS TO MOVE,
- WHILE ┬┴╙╔├ IS FREE TO PROCESS OTHER COMMANDS. ╙PRITES CAN ALSO BE
- INTERNALLY ANIMATED BY CHANGING THE POINTER TO THE DATA THAT DESCRIBES
- THEIR FORM.
-
- ╔F ╙PRITE ┴NIMATE ISN'T ENOUGH, THERE IS ANOTHER SPRITE MODE
- AVAILABLE TO ╨╟═ USERS: 14-╙╨╥╔╘┼ MODE. ╘HIS USES MORE INTERRUPT
- PROGRAMMING TECHNIQUES TO GIVE YOU AN ADDITIONAL SIX SPRITES.
-
- ╘HE PROGRAM TITLED ╨╟═.┬╔╬ IS THE MACHINE LANGUAGE THAT MAKES UP THE
- ╨╟═ SYSTEM. ╘HE PROGRAM TITLED ╨╟═ IS THE ┬┴╙╔├ LOADER WHICH LOADS ╨╟═.┬╔╬
- ONTO MEMORY AND INITIALIZES THE ╨╟═ SYSTEM. ╘HE FILE ├╚┴╥ ╙┼╘╙ CONTAINS THE
- 80 COLUMN AND OTHER CHARACTER SETS. ╘HESE ARE THE MINIMUM SYSTEM. ╙EVERAL
- DEMONSTRATION PROGRAMS AND THEIR ASSOCIATED DATA FILES ARE ALSO PROVIDED.
-
- ╘HERE ARE A TOTAL OF 41 COMMAND IN ╨╟═. ╘O GET THE RIGHT RESULTS,
- YOU MUST BE CAREFUL TO USE THE CORRECT SYNTAX. ╙OME OF THE PARAMETERS ARE
- OPTIONAL AND CAN BE OMITTED IF NOT NEEDED. ╘HESE OPTIONAL PARAMETERS ARE
- ENCLOSED IN BRACKETS IN THE FOLLOWING PROGRAMMERS' DOCUMENTATION. ╘HOSE
- PARAMETERS NOT ENCLOSED WITH BRACKETS ARE REQUIRED.
-
-
-
- ╨╟═ ╘IPS
- --------
-
- 1. ╘HE PROGRAM DOES NOT SUPPORT TAPE OR ╥╙232.
-
- 2. ┬E SURE TO SAVE THE PROGRAMS YOU WRITE BEFORE YOU RUN THEM.
-
- 3. ┴LWAYS ENTER AND EXIT 14-SPRITE MODE AS DESCRIBED IN THE ├OMMAND
- SUMMARY FOLLOWING THIS SECTION.
-
- 4. ┬E CAREFUL WITH YOUR MEMORY MANAGEMENT. ╘RYING TO WRITE OUTSIDE OF THE
- AVAILABLE ╥┴═ AREAS (SEE ═EMORY ═AP) WILL CAUSE THE COMPUTER TO CRASH.
-
- 5. ╙TRANGE EFFECTS CAN BE ACHIEVED WHEN MOVING SPRITES ACROSS THE SCANLINE
- BOUNDARY. ╘HESE MAY BE USEFUL IN CERTAIN SITUATIONS.
-
- 6. ╘HE FIRST LINES OF ANY PROGRAM SHOULD BE:
-
- 10 ╔╞ ┴=0 ╘╚┼╬ ┴=1:╠╧┴─ "╨╟═",8,1:╥┼═ ╠╧┴─ ╨╟═
- 20 ╨╧╦┼ 55,255:╨╧╦┼ 56,131:├╠╥:╥┼═ ╠╧╫┼╥ ╘╧╨ ╧╞ ┬┴╙╔├ ┬┼╠╧╫ ╨╟═
- 30 ┬┴=33792:╥┼═ ─┼╞╔╬┼ ┬┴╙┼ ┴──╥┼╙╙
- 40 ╙┘╙ ┬┴+6,╚╔╥┼╙ ┴──╥┼╙╙, ├╧╠╧╥ ═┼═╧╥┘:╥┼═ ╙┼╘ ┴──╥┼╙╙
- 50 ╙┘╙ ┬┴:╥┼═ ┴├╘╔╓┴╘┼ ╨╟═
- 60 ╙┘╙ ┬┴+24:╥┼═ ┼╬╘┼╥ ╚╔╥┼╙ ═╧─┼
-
- 7. ┼ND YOUR PROGRAM WITH:
-
- 10000 ╙┘╙ ┬┴+27:╙┘╙ ┬┴+3:┼╬─:╥┼═ ╚╔╥┼╙ ╧╞╞, ╨╟═ ─┼┴├╘╔╓┴╘┼─
-
- ╔F YOUR PROGRAM STOPS AND YOU SUSPECT IT HAS HIT A SYNTAX ERROR, TRY
- TYPING ╟╧╘╧ 100000. ╘HIS WILL GET YOU OUT OF ╨╟═ AND YOU CAN CHECK FOR
- ERROR MESSAGES ON THE TEXT SCREEN.
-
- 8. ╞OR THE MOST EFFICIENT USE OF YOUR MEMORY, WE RECOMMEND YOU USE 57344
- AS YOUR BITMAP SCREEN AND 52224 AS YOUR COLOR MEMORY. ╘HIS ALLOWS THE
- ╥┴═ AT 40960-52223 TO BE USED FOR STORAGE OF CHARACTER SETS, SCREENS,
- WINDOWS AND SPRITES.
-
- 9. ┴LL VALUES FOR PARAMETERS ARE IN DECIMAL.
-
- 10. ┴RRAYS CAN BE USED IN PARAMETERS.
-
- ╫HEN USING WINDOWS, KEEP IN MIND THAT IT IS UP TO YOU TO HANDLE THE
- MEMORY MANAGEMENT. ╨╟═ WILL WRITE OR READ TO ANY AREA YOU TELL IT AND IF
- YOU ARE NOT CAREFUL, THE RESULTS ARE UNPREDICTABLE. ╞OR EXAMPLE, WHEN YOU
- WANT TO STORE A GIVEN AREA AS A WINDOW, YOU MUST KNOW HOW MUCH MEMORY IT
- WILL TAKE TO STORE A WINDOW OF ITS SIZE IN ORDER TO KNOW WHERE IT CAN BE
- STORED. ╔F YOUR WINDOW IS TEN ROWS BY TEN COLUMNS, THAT EQUALS 100
- CHARACTER-SIZE BLOCKS OF ╥┴═. ┼ACH CHARACTER BLOCK HAS EIGHT BYTES OF ╥┴═
- FOR BITMAP AND ONE BYTE FOR COLOR MEMORY. ╙O A TEN-BY-TEN WINDOW REQUIRES
- 900 BYTES PLUS TWO BYTES OVERHEAD, FOR A TOTAL OF 902 BYTES. (╘HE TWO-BYTE
- OVERHEAD IS ALWAYS THE SAME, REGARDLESS OF WINDOW SIZE.) ┘OU CAN FIND THE
- ADDRESS OF THE LAST BYTE OF MEMORY USED BY CODING THE PROCEDURE GIVEN UNDER
- THE ├╧╨┘ ╫╔╬─╧╫ COMMAND.
-
- ╫HEN YOU WANT TO RESTORE A COPIED WINDOW, USE THE ╥┼╙╘╧╥┼ ╫╔╬─╧╫
- COMMAND WITH THE ADDRESS OF THE AREA OF ╥┴═ WHERE THE STORED WINDOW BEGINS,
- AND THE ROW AND COLUMN TO WRITE IT BACK TO. ╔T WILL BE RESTORED (WITH
- COLOR) TO THE SPECIFIED AREA OF THE SCREEN.
-
- ╘HE SPRITE COMMANDS OFTEN REQUIRE SPRITE POINTERS. ┴ SPRITE POINTER
- IS A NUMBER THAT INDICATES WHERE IN MEMORY THE FIRST BYTE OF SPRITE DATA IS
- LOCATED. ╘HE ╙╨╥╔╘┼ ╨╠╧╘ AND ┴╬╔═┴╘┼ COMMANDS BOTH USE SPRITE POINTERS IN
- THE RANGE OF 0-255. ╘HE SPRITE DATA MUST BE WITHIN THE 16╦ BANK OF MEMORY
- YOU HAVE SET YOUR SCREENS AT USING THE ╙┼╘ ┴──╥┼╙╙ COMMAND. ╞OR INSTANCE,
- IF YOUR SCREEN IS AT 57344, ALL SPRITE DATA MUST BE WITHIN THE AREA OF
- 49152-65535. ┴ SPRITE DESCRIPTION STORED AT 49152 HAS A POINTER VALUE OF
- ZERO, WHILE ONE AT 49216 (49152+64) HAS A POINTER VALUE OF ONE. ╙O POINTER
- ZERO BEGINS AT THE FIRST ADDRESS OF THE VIDEO BANK YOU ARE IN, WHILE
- POINTER 255 LIES AT THE END OF THE 16╦ VIDEO BANK YOU ARE IN. ╥EMEMBER
- THAT THE SPRITES MUST BE STORED IN THE SAME BANK AS YOUR SCREEN WHEN YOU
- WANT TO USE THEM.
-
- ╚OWEVER, SEVERAL SPRITE UTILITY COMMANDS (╙╨╥╔╘┼ ╥┼╞╠┼├╘, ╙╨╥╔╘┼
- ╥┼╓┼╥╙┼ AND ╙╨╥╔╘┼ ╪╞┼╥ USE POINTERS IN THE RANGE OF 0-1023. ╘HE
- DIFFERENCE HERE IS THESE COMMANDS ARE NOT USED TO VISUALIZE SPRITES, BUT
- INSTEAD ARE SPECIAL WAYS OF HANDLING SPRITE DATA IN MEMORY. ╘HIS IS ONLY
- THEORETICAL, SINCE SOME OF THESE POTENTIAL LOCATIONS ARE IN USE BY THE
- COMPUTER (╙EE ═EMORY ═AP). ┬Y USING THESE POINTERS, YOU CAN MANIPULATE
- SPRITE DATA WITH THESE SPRITE UTILITIES.
-
- ╞OR INSTANCE, SUPPOSE YOUR SCREEN IS AT 57344, WHICH MEANS THE VIDEO
- CHIP IS LOOKING AT LOCATIONS 49152-65535. ┴LL SPRITES MUST BE LOCATED
- SOMEWHERE WITHIN THIS AREA TO BE SEEN. ╚OWEVER, THE SPRITES YOU ARE NOT
- USING AT THE TIME CAN BE STORED SOMEWHERE ELSE, LIKE UNDER ┬┴╙╔├ ╥╧═ AT
- 40960. ╫HEN THE TIME COMES FOR YOU TO USE THOSE STORED SPRITES, THE ╙╨╥╔╘┼
- ╪╞┼╥ COMMAND CAN BE USED TO TRANSFER THEM FROM THEIR TEMPORARY STORAGE TO
- SOMEWHERE IN THE ACTIVE VIDEO BANK.
-
- ╚ERE IS AN EXAMPLE OF THE ╙╨╥╔╘┼ ╪╞┼╥ COMMAND:
-
- ╙┘╙ ┬┴+96,512,10,767
-
- ╔T SAYS TO TRANSFER THE SPRITES STARTING AT ABSOLUTE SPRITE POINTER
- 512 (40960 DECIMAL) AND TAKE TEN OF THEM (10*64 BYTES) AND PUT THEM AT
- ABSOLUTE POINTER 767 (49152). ╚ERE THE SPRITE POINTER OF 49152 IS 767, NOT
- ZERO, AS IT WOULD BE IF YOU WERE MOVING OR ANIMATING A SPRITE.
-
-
-
- ╒SER ═EMORY ═AP
- ---------------
-
- 0-255 ╬OT AVAILABLE
- 251-254 ╞REE ZERO PAGE
- 255-827 ╬OT AVAILABLE
- 828-1023 ╞REE ╥┴═
- 1024-2047 ╬ORMAL LOW-RES SCREEN
- 2048-33791 ┬┴╙╔├ ╥┴═
- 33792-40959 ╨╟═ SYSTEM
- 40960-53247 ╞REE ╥┴═
- 53248-57343 ╬OT AVAILABLE
- 57344-65343 ╞REE ╥┴═
- 65344-65535 ╬OT AVAILABLE
-
-
- ╘HIS FILE WAS PAINSTAKINGLY TYPED IN BY ╘HE ╙HARK! FROM THE ╨╟═ ARTICLE IN
- THE ╞EB./═ARCH 1986 ├OMMODORE ╨OWER/╨LAY MAGAZINE BY ─AVID ╨. ─ARUS, ╦EN
- ╞RENCH, AND ╠OUIS ╥. ╫ALLACE. ╘HE PROGRAM HAS BEEN GRACIOUSLY PLACED IN
- THE PUBLIC DOMAIN BY THE AUTHORS. ╞OR A COMPLETE LIST OF ╨╟═-64 COMMAND
- SYNTAX, SEE ╨╟═ ├╧══┴╬─╙.─╧├.
-